<?php
namespace Swiftx\Interfaces\Orm;

/**
 * 工厂基础类
 * @default-implement Swiftx\Component\Orm\Factory singleton=false
 */
interface Factory {

    /**
     * 设置实体类型
     * @param string $class
     */
    public function setEntityClass(string $class);

    /**
     * 获取实体类名
     * @return string
     */
    public function getEntityClass():string ;

    /**
     * 获取查询器
     * @param string $name
     * @return Query
     */
    public function query(string $name):Query;

    /**
     * 获取对象
     * @param array ...$args
     * @return Entity
     */
    public function fetch(... $args):?Entity ;

}